Forum des exercices du projet Zuul

Exercice 7.20

  
 
Avatar anonfirstname2 anonlastname2
Exercice 7.20
par anonfirstname2 anonlastname2, dimanche 21 mars 2021, 16:35
 
  1. Lire la suite du chapitre 7 [ci-joint] (si possible en anglais, sinon en français).

    Cet exercice doit être compris, terminé et fonctionnel avant de commencer l'exercice 7.22 (qui lui, vous permettra d'ajouter plusieurs items dans une même pièce).

  2. Extend your adventure project so that a Room can contain a single Item.
    Items have a description and a weight, so maybe the getters could be useful ?
    When creating
    Rooms and setting their exits, Items for this game should also be created and an Item should be set into some Rooms (create a method setItem to do that !).
    Please note that we don't want an Item in every Room, so we don't want any additional parameter for Room's constructor.

    When a player enters a Room, information about an Item present in this Room should be displayed, or "No item here.".

Aide : De même que getExitString décrit les sorties d'une Room, getItemString décrira l'(es) item(s) d'une Room, et la description longue devra évidemment en tenir compte.

Remarque : Il est possible de remplacer le poids de chaque Item par un prix, ou même de prévoir les deux !

Attention ! Une classe représentant un item ne peut pas s'appeler Items (et ne peut pas contenir plusieurs items) !

Avatar Rubben SELLEM
Re: Exercice 7.20
par Rubben SELLEM, mercredi 1 avril 2015, 14:04
 

Bonjour,

je voulais savoir ce qu'était la définition du mot  "Champs" dans le fichier pdf joins a cette page.

Je vous remercie.

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, mercredi 1 avril 2015, 18:07
 

Si vous aviez lu la version en anglais, vous auriez trouvé la signification dans le glossaire anglais/français (qui hélas n'existe plus).

Pour ceux qui lisent la version en français, j'ai ajouté une entrée dans le glossaire du vocabulaire objet (qui hélas n'existe plus).

champ se traduit par field qui en POO est équivalent à attribut.

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, jeudi 7 avril 2016, 18:57
 

Un étudiant a écrit :

Il s'agit bien ici de créer  une classe item avec les getters et setters ?

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, jeudi 7 avril 2016, 18:58
 

Oui, mais je ne pense pas que vous aurez besoin des setters, car on ne modifie généralement pas un Item.

Avatar Axel ABOYEJI
Re: Exercice 7.20
par Axel ABOYEJI, samedi 9 avril 2016, 19:27
 

J'ai crée ma classe item avec les deux accesseurs mais je ne vois pas quoi faire ensuite... 

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, samedi 9 avril 2016, 22:28
 

Il faut maintenant permettre à chaque Room de contenir un Item, puis enrichir la description de la pièce en ajoutant le nom de l'Item qui s'y trouve, et enfin créer au moins un Item et le mettre dans une des premières pièces pour pouvoir tester.

Avatar Axel ABOYEJI
Re: Exercice 7.20
par Axel ABOYEJI, dimanche 10 avril 2016, 17:03
 

Cela induit donc la création d'une méthode addItem () avec un paramètre String et Item qui est plutôt demandé au 7.22...

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, dimanche 10 avril 2016, 17:59
 

plutôt une méthode setItem (puisqu'il n'y a qu'un item), avec juste un paramètre Item

(votre formulation s'applique effectivement plus au 7.22)

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, mercredi 19 avril 2017, 16:49
 

Un étudiant a écrit :

Devons-nous faire comme pour le tp 7.1 avec un inventaire Joueur (list, Arraylist) et un inventaire "Room" ( hashmap contenant tout les item et leur Room ) ?

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, mercredi 19 avril 2017, 17:07
 

Surtout pas !

Cet exercice consiste uniquement à permettre de stocker UN Item dans n'importe quelle Room.

En stocker plusieurs sera l'objet de l'exercice 7.22.

Quant à permettre au joueur de les ramasser, cela n'arrivera qu'aux exercices 7.30+7.31.

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, samedi 10 mars 2018, 23:28
 

Un étudiant a écrit :

Je suis actuellement en train de finir les exercices de la pers4.
Dans l’exercice 7.20 et 7.21, il est expliqué que nous devons rajouter des « items .
Si j’ai bien compris il s’agit d’objets, qui peuvent être par exemple, un « râteau ».
Vous nous demandez de les ajouter à notre jeu.

  1. Pour effectuer cette tâche, j’ai pensé créer une classe « Items » qui permettrait de créer les objets et de les initialiser. Elle serait également composée d’accesseur et de modificateur.
  2. Une fois cela effectué, je pensais incorporer chaque item dans les salles leur correspondant, en ajoutant au constructeur de la class Room un troisième paramètre de type « Items ».
  3. Enfin je n’aurais plus qu’à ajouter les descriptions de mes objets dans GameEgine (au même endroit que mes salles =>exemple vAthenes = new Room("à Athènes en 496 av J-C","Images/vAthenes.jpg", « rateau ») ) .

Suis-je dans le bon raisonnement ? Et si oui, manque-t-il quelque chose ?


Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, samedi 10 mars 2018, 23:50
 

* Vous avez bien compris ce qu'il faut faire, mais ce ne sont pas forcément les meilleures solutions pour y arriver..

  1. Relisez mieux la fin de l'énoncé de cet exercice pour comprendre pourquoi la classe ne doit pas s'appeler Items.
    OK pour les accesseurs, mais il est peu probable que vous ayez besoin de modificateurs.
  2. L'inconvénient de votre solution est que l'on ne souhaite pas forcément mettre un Item dans chaque Room.
    Il vaut mieux prévoir une méthode setItem dans Room qu'on appellera lorsqu'on voudra mettre un Item dans une Room.
  3. Après les new Room, il faudra mettre les new Item puis les setItem
Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, jeudi 22 novembre 2018, 18:41
 

Un étudiant a écrit :

Bonjour Monsieur,

j'ai une question vis-à-vis de l'exercice 7.20:
L'exercice a été fait mais je suis pas sûr que c'est ce qu'il fallait faire.

Pour cette exercice j'ai crée ma classe Item avec les attributs pour le nom et le poids,le constructeurs,les 2 accesseurs et les 2 modificateurs.
Dans ma classe Room j'ai ajouté un attribut de type HashMap<String, Room> et ensuite j'ai crée la hashmap dans le constructeur
et j'ai crée une méthode setItem() semblable à setExit() (voir screen joint)
et enfin dans la classe GameEngine j'ai appelé cette méthode sur une Room dans la méthode createRooms() pour attribuer un Item à une Room spécifique.

Est-ce le bon raisonnement?

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, jeudi 22 novembre 2018, 19:22
 

Hélas non.
(vous avez bien fait de demander)

Vous vous êtes bcp éloigné de l'énoncé ; est-ce un pb de compréhension de l'anglais ?

Reprenons l'énoncé :

  • Extend your adventure project so that a Room can contain a single Item.
    Cela veut donc dire qu'il faut ajouter un attribut de type Item dans la classe Room ; comme ça, pour pourra stocker un Item dans chaque objet Room. Pourquoi ajouter une nouvelle HashMap dans Room ?
  • Items have a description and a weight.
    ça vous l'avez compris, si ce n'est qu'on ne voit pas pourquoi on irait modifier le nom ou le poids d'un Item ...
  • When creating Rooms and setting their exits, Items for this game should also be created.
    Donc, il faudra créer des Items dans createRooms et en mettre dans certaines pièces selon votre scénario.
  • When a player enters a Room, information about an Item present in this Room should be displayed.
    Donc, il faudra compléter getLongDescription dans Room pour qu'elle affiche la description de l'Item s'il y en a un.

Par ailleurs :
- Prévoir un paramètre Room dans la procédure setItem qui est une méthode de Room n'est pas une bonne idée puisque l'objet courant sera déjà la Room dans laquelle on veut ajouter cet Item.
- Je ne suis pas sûr que vous ayez compris le principe de la HashMap qui stocke des associations (clé,valeur) : on associe à une clé (pratique) un objet qu'on veut pouvoir retrouver facilement.

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, mercredi 11 novembre 2020, 16:04
 

Un étudiant a écrit :

j'aimerais savoir si la classe Item qu'on doit implémenter dans le jeu doit être la même que celle qu'on a créé lors du TP6, en utilisant des types objets plutôt que les types primitifs, et s'il fallait redéfinir compareTo() et toString()?

Avatar Denis BUREAU
Re: Exercice 7.20
par Denis BUREAU, mercredi 11 novembre 2020, 16:14
 

> j'aimerais savoir si la classe Item qu'on doit implémenter dans le jeu doit être la même que celle qu'on a créé lors du TP6,
>
non, puisque dans le projet, on vous demande un poids et non un prix

> en utilisant des types objets plutôt que les types primitifs,
>
la classe Item du TP6 utilise bien un type primitif pour le prix ...

> et s'il fallait redéfinir compareTo()
>
pas pour l'instant ; vous verrez si vous avez besoin de comparer des Items ...

> et toString() ?
>
il y a de grandes chances que vous ayez besoin d'une représentation sous forme de String d'un Item !